<!-- HTML header for doxygen 1.8.20-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
	<meta name="generator" content="Doxygen 1.9.4"/>
	<meta name="viewport" content="width=device-width, initial-scale=1"/>
	<title>Raspberry Pi Pico SDK: interp_config</title>
	<!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
	<script type="text/javascript" src="jquery.js"></script>
	<script type="text/javascript" src="dynsections.js"></script>
	<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
	<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
	<link href="doxygen.css" rel="stylesheet" type="text/css" />
	<link href="normalise.css" rel="stylesheet" type="text/css"/>
<link href="main.css" rel="stylesheet" type="text/css"/>
<link href="styles.css" rel="stylesheet" type="text/css"/>
</head>
<body>
	<div class="navigation-mobile">
		<div class="logo--mobile">
			<a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
		</div>
		<div class="navigation-toggle">
			<span class="line-1"></span>
			<span class="line-2">
				<p>Menu Toggle</p>
			</span>
			<span class="line-3"></span>
		</div>
	</div>
	<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
		<div class="logo">
			<a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
			<span style="display: inline-block; margin-top: 10px;">
				v2.0.0
			</span>
		</div>
		<div class="navigation-footer">
			<img src="logo-mobile.svg" alt="Raspberry Pi">
			<a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
		</div>
<!-- 		<div class="search">
			<form>
				<input type="search" name="search" id="search" placeholder="Search">
				<input type="submit" value="Search">
			</form>
		</div> -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__interp__config.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">interp_config<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a> &raquo; <a class="el" href="group__hardware__interp.html">hardware_interp</a></div></div></div>
</div><!--header-->
<div class="contents">

<p>Interpolator configuration.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga30d763b581c679c02cefe2fa90d8c8a7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga30d763b581c679c02cefe2fa90d8c8a7">interp_config_set_shift</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, uint shift)</td></tr>
<tr class="memdesc:ga30d763b581c679c02cefe2fa90d8c8a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the interpolator shift value.  <a href="group__interp__config.html#ga30d763b581c679c02cefe2fa90d8c8a7">More...</a><br /></td></tr>
<tr class="separator:ga30d763b581c679c02cefe2fa90d8c8a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32f22fb5240d4b53a62a0dfcb838b56d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga32f22fb5240d4b53a62a0dfcb838b56d">interp_config_set_mask</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, uint mask_lsb, uint mask_msb)</td></tr>
<tr class="memdesc:ga32f22fb5240d4b53a62a0dfcb838b56d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the interpolator mask range.  <a href="group__interp__config.html#ga32f22fb5240d4b53a62a0dfcb838b56d">More...</a><br /></td></tr>
<tr class="separator:ga32f22fb5240d4b53a62a0dfcb838b56d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb64e0515ebeabd2fdd4c64712c6e3f9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#gaeb64e0515ebeabd2fdd4c64712c6e3f9">interp_config_set_cross_input</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool cross_input)</td></tr>
<tr class="memdesc:gaeb64e0515ebeabd2fdd4c64712c6e3f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable cross input.  <a href="group__interp__config.html#gaeb64e0515ebeabd2fdd4c64712c6e3f9">More...</a><br /></td></tr>
<tr class="separator:gaeb64e0515ebeabd2fdd4c64712c6e3f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadfdf4d9fff3f9a2154645f71ca47ddb1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#gadfdf4d9fff3f9a2154645f71ca47ddb1">interp_config_set_cross_result</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool cross_result)</td></tr>
<tr class="memdesc:gadfdf4d9fff3f9a2154645f71ca47ddb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable cross results.  <a href="group__interp__config.html#gadfdf4d9fff3f9a2154645f71ca47ddb1">More...</a><br /></td></tr>
<tr class="separator:gadfdf4d9fff3f9a2154645f71ca47ddb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba828dabbf74d63c7d0677411840e8ea"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#gaba828dabbf74d63c7d0677411840e8ea">interp_config_set_signed</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool _signed)</td></tr>
<tr class="memdesc:gaba828dabbf74d63c7d0677411840e8ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set sign extension.  <a href="group__interp__config.html#gaba828dabbf74d63c7d0677411840e8ea">More...</a><br /></td></tr>
<tr class="separator:gaba828dabbf74d63c7d0677411840e8ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga881f960275b1e17ff004103640bc0258"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga881f960275b1e17ff004103640bc0258">interp_config_set_add_raw</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool add_raw)</td></tr>
<tr class="memdesc:ga881f960275b1e17ff004103640bc0258"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set raw add option.  <a href="group__interp__config.html#ga881f960275b1e17ff004103640bc0258">More...</a><br /></td></tr>
<tr class="separator:ga881f960275b1e17ff004103640bc0258"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga494025486e3c301b46f241852dc7af46"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga494025486e3c301b46f241852dc7af46">interp_config_set_blend</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool blend)</td></tr>
<tr class="memdesc:ga494025486e3c301b46f241852dc7af46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set blend mode.  <a href="group__interp__config.html#ga494025486e3c301b46f241852dc7af46">More...</a><br /></td></tr>
<tr class="separator:ga494025486e3c301b46f241852dc7af46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0e94b2b16fb356cfa09703bb0bd0285e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga0e94b2b16fb356cfa09703bb0bd0285e">interp_config_set_clamp</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, bool clamp)</td></tr>
<tr class="memdesc:ga0e94b2b16fb356cfa09703bb0bd0285e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set interpolator clamp mode (Interpolator 1 only)  <a href="group__interp__config.html#ga0e94b2b16fb356cfa09703bb0bd0285e">More...</a><br /></td></tr>
<tr class="separator:ga0e94b2b16fb356cfa09703bb0bd0285e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f8df0132623c69cffd0e66e1b679fae"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga1f8df0132623c69cffd0e66e1b679fae">interp_config_set_force_bits</a> (<a class="el" href="structinterp__config.html">interp_config</a> *c, uint bits)</td></tr>
<tr class="memdesc:ga1f8df0132623c69cffd0e66e1b679fae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set interpolator Force bits.  <a href="group__interp__config.html#ga1f8df0132623c69cffd0e66e1b679fae">More...</a><br /></td></tr>
<tr class="separator:ga1f8df0132623c69cffd0e66e1b679fae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga171e5080ebbdf84745bd5c6a4fada90e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structinterp__config.html">interp_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#ga171e5080ebbdf84745bd5c6a4fada90e">interp_default_config</a> (void)</td></tr>
<tr class="memdesc:ga171e5080ebbdf84745bd5c6a4fada90e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a default configuration.  <a href="group__interp__config.html#ga171e5080ebbdf84745bd5c6a4fada90e">More...</a><br /></td></tr>
<tr class="separator:ga171e5080ebbdf84745bd5c6a4fada90e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gace3f9a4de8e142d76cd54a54ad67a296"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__interp__config.html#gace3f9a4de8e142d76cd54a54ad67a296">interp_set_config</a> (<a class="el" href="structinterp__hw__t.html">interp_hw_t</a> *interp, uint lane, <a class="el" href="structinterp__config.html">interp_config</a> *config)</td></tr>
<tr class="memdesc:gace3f9a4de8e142d76cd54a54ad67a296"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send configuration to a lane.  <a href="group__interp__config.html#gace3f9a4de8e142d76cd54a54ad67a296">More...</a><br /></td></tr>
<tr class="separator:gace3f9a4de8e142d76cd54a54ad67a296"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >Interpolator configuration. </p>
<p >Each interpolator needs to be configured, these functions provide handy helpers to set up configuration structures. </p>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga881f960275b1e17ff004103640bc0258" name="ga881f960275b1e17ff004103640bc0258"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga881f960275b1e17ff004103640bc0258">&#9670;&nbsp;</a></span>interp_config_set_add_raw()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_add_raw </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>add_raw</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set raw add option. </p>
<p >When enabled, mask + shift is bypassed for LANE0 result. This does not affect the FULL result.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">add_raw</td><td>If true, enable raw add option. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga494025486e3c301b46f241852dc7af46" name="ga494025486e3c301b46f241852dc7af46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga494025486e3c301b46f241852dc7af46">&#9670;&nbsp;</a></span>interp_config_set_blend()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_blend </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>blend</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set blend mode. </p>
<p >If enabled, LANE1 result is a linear interpolation between BASE0 and BASE1, controlled by the 8 LSBs of lane 1 shift and mask value (a fractional number between 0 and 255/256ths)</p>
<p >LANE0 result does not have BASE0 added (yields only the 8 LSBs of lane 1 shift+mask value)</p>
<p >FULL result does not have lane 1 shift+mask value added (BASE2 + lane 0 shift+mask)</p>
<p >LANE1 SIGNED flag controls whether the interpolation is signed or unsig</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">blend</td><td>Set true to enable blend mode. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga0e94b2b16fb356cfa09703bb0bd0285e" name="ga0e94b2b16fb356cfa09703bb0bd0285e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0e94b2b16fb356cfa09703bb0bd0285e">&#9670;&nbsp;</a></span>interp_config_set_clamp()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_clamp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>clamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set interpolator clamp mode (Interpolator 1 only) </p>
<p >Only present on INTERP1 on each core. If CLAMP mode is enabled:</p><ul>
<li>LANE0 result is a shifted and masked ACCUM0, clamped by a lower bound of BASE0 and an upper bound of BASE1.</li>
<li>Signedness of these comparisons is determined by LANE0_CTRL_SIGNED</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">clamp</td><td>Set true to enable clamp mode </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gaeb64e0515ebeabd2fdd4c64712c6e3f9" name="gaeb64e0515ebeabd2fdd4c64712c6e3f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeb64e0515ebeabd2fdd4c64712c6e3f9">&#9670;&nbsp;</a></span>interp_config_set_cross_input()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_cross_input </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>cross_input</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enable cross input. </p>
<p >Allows feeding of the accumulator content from the other lane back in to this lanes shift+mask hardware. This will take effect even if the interp_config_set_add_raw option is set as the cross input mux is before the shift+mask bypass</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">cross_input</td><td>If true, enable the cross input. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gadfdf4d9fff3f9a2154645f71ca47ddb1" name="gadfdf4d9fff3f9a2154645f71ca47ddb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadfdf4d9fff3f9a2154645f71ca47ddb1">&#9670;&nbsp;</a></span>interp_config_set_cross_result()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_cross_result </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>cross_result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enable cross results. </p>
<p >Allows feeding of the other lane’s result into this lane’s accumulator on a POP operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">cross_result</td><td>If true, enables the cross result </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga1f8df0132623c69cffd0e66e1b679fae" name="ga1f8df0132623c69cffd0e66e1b679fae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1f8df0132623c69cffd0e66e1b679fae">&#9670;&nbsp;</a></span>interp_config_set_force_bits()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_force_bits </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>bits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set interpolator Force bits. </p>
<p >ORed into bits 29:28 of the lane result presented to the processor on the bus.</p>
<p >No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence of pointers into flash or SRAM</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">bits</td><td>Sets the force bits to that specified. Range 0-3 (two bits) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga32f22fb5240d4b53a62a0dfcb838b56d" name="ga32f22fb5240d4b53a62a0dfcb838b56d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga32f22fb5240d4b53a62a0dfcb838b56d">&#9670;&nbsp;</a></span>interp_config_set_mask()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_mask </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>mask_lsb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>mask_msb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the interpolator mask range. </p>
<p >Sets the range of bits (least to most) that are allowed to pass through the interpolator</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">mask_lsb</td><td>The least significant bit allowed to pass </td></tr>
    <tr><td class="paramname">mask_msb</td><td>The most significant bit allowed to pass </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga30d763b581c679c02cefe2fa90d8c8a7" name="ga30d763b581c679c02cefe2fa90d8c8a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga30d763b581c679c02cefe2fa90d8c8a7">&#9670;&nbsp;</a></span>interp_config_set_shift()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_shift </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>shift</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the interpolator shift value. </p>
<p >Sets the number of bits the accumulator is shifted before masking, on each iteration.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to an interpolator config </td></tr>
    <tr><td class="paramname">shift</td><td>Number of bits </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gaba828dabbf74d63c7d0677411840e8ea" name="gaba828dabbf74d63c7d0677411840e8ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaba828dabbf74d63c7d0677411840e8ea">&#9670;&nbsp;</a></span>interp_config_set_signed()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_config_set_signed </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>_signed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set sign extension. </p>
<p >Enables signed mode, where the shifted and masked accumulator value is sign-extended to 32 bits before adding to BASE1, and LANE1 PEEK/POP results appear extended to 32 bits when read by processor.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">c</td><td>Pointer to interpolation config </td></tr>
    <tr><td class="paramname">_signed</td><td>If true, enables sign extension </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga171e5080ebbdf84745bd5c6a4fada90e" name="ga171e5080ebbdf84745bd5c6a4fada90e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga171e5080ebbdf84745bd5c6a4fada90e">&#9670;&nbsp;</a></span>interp_default_config()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structinterp__config.html">interp_config</a> interp_default_config </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get a default configuration. </p>
<dl class="section return"><dt>Returns</dt><dd>A default interpolation configuration </dd></dl>

</div>
</div>
<a id="gace3f9a4de8e142d76cd54a54ad67a296" name="gace3f9a4de8e142d76cd54a54ad67a296"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace3f9a4de8e142d76cd54a54ad67a296">&#9670;&nbsp;</a></span>interp_set_config()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void interp_set_config </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structinterp__hw__t.html">interp_hw_t</a> *&#160;</td>
          <td class="paramname"><em>interp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>lane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structinterp__config.html">interp_config</a> *&#160;</td>
          <td class="paramname"><em>config</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Send configuration to a lane. </p>
<p >If an invalid configuration is specified (ie a lane specific item is set on wrong lane), depending on setup this function can panic.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">interp</td><td>Interpolator instance, interp0 or interp1. </td></tr>
    <tr><td class="paramname">lane</td><td>The lane to set </td></tr>
    <tr><td class="paramname">config</td><td>Pointer to interpolation config </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->

	<script src="main.js"></script>
</body>
</html>